セキュリティ攻撃 クロスサイトスクリプティング(XSS)
概要
XSSとは「Webサイトに悪意のあるスクリプトを埋め込む」攻撃手法のこと。
現在(2021年)も現役バリバリの攻撃手法なので、油断してたらマジで痛い目見るよ!
悪意のあるスクリプトが実行できる状態でありさえすれば、どんな応用にでも繋げれる。相当ヤベー攻撃です。
悪意のあるスクリプトってどうやって埋め込むのよ?
基本中の基本
フォームから不正文字列を入力する
フォームから出なくても、サーバーにデータを送るとこなら何でも。URLパラメータ、リクエストボディなど
ex)掲示板
コメントを入力すると、そのコメントがリストで表示されるっていう機能。
データが表示されるときに、XSSの脆弱性が存在するかどうかが判明する。
説明
コメント入力のとこで「おはよう」とかではなく「<script>alert(1)</script>」と投稿してみる
ページをリロードした瞬間、ポップアップで「1」というアラートが表示された場合、このページにはXSSの脆弱性が存在すると言える。
ページをエスケープ処理などでセキュアな状態にしておけば、こういった時代にはならないのだが...
XSSのめちゃくちゃ大事なポイント
html特殊文字をちゃんとエスケープ処理してないページが狙われる
不正者は特殊文字を何かしらの方法(フォーム、getパラメータ)でサーバーに送り、サイトページを改ざんする。
改ざんされたページでは、セッションハイジャックや機密情報漏洩などの危険性をはらむ事になる。
XSSの種類
1. 反射型XSS
脆弱性のあるサイトへのカスタマイズしたリンクを用意する
ターゲットサイトで不正スクリプトが実行されるリンクになってる。
用意したリンクを誰かに踏ませて、その不正スクリプトを実行させることで悪事を働く
2. 蓄積型XSS
Webアプリケーションに不正文字列を格納する(なんらかの方法で)
そして、ユーザーが何かしらのページを閲覧するたびにそのスクリプトが実行されるようにする。
不特定多数に被害が及ぶ可能性の大きいやばいXSS。
3. Dom Based XSS
Javascriptコードの脆弱性を利用して、入力値に不正スクリプトをぶち込む。
サイト内でjavscriptを使っており、ユーザーから入力を処理してる場所があるなら、そこにはXSSの危険があると思っておいたほうがいい。
https://cysec148.hatenablog.com/entry/2021/04/19/143152
参考情報
https://viral-community.com/blog/xss-1835/